﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Sinacor.Infra.Common.Exceptions.FaultContracts;
using System.ServiceModel;

namespace Sinacor.Infra.Common.Exceptions
{
    /// <summary>
    /// Exceção disparada para acesso negado
    /// </summary>
    public class AccessIsDeniedException : BaseLogException
    {
        /// <summary>
        /// Construtor padrão
        /// </summary>
        public AccessIsDeniedException()
            : base()
        {
        }

        /// <summary>
        /// Construtor que inicializa Message
        /// </summary>
        /// <param name="message">Mensagem de erro</param>
        public AccessIsDeniedException(string message)
            : base(message)
        {
        }

        /// <summary>
        /// Construtor que inicializa Message e InnerException
        /// </summary>
        /// <param name="message">Mensagem de erro</param>
        /// <param name="innerException">Erro que originou a Exception</param>
        public AccessIsDeniedException(string message, Exception innerException)
            : base(message, innerException)
        {
        }

        /// <summary>
        /// Cria instância da falta
        /// </summary>
        /// <returns>Instância da falta</returns>
        protected override BaseFault CreateFaultInstance()
        {
            return new AccessIsDeniedFault();
        }

        /// <summary>
        /// Cria uma exceção de falta a partir da exceção
        /// </summary>
        /// <returns>Falta com o erro</returns>
        public override FaultException CreateFaultException()
        {
            return new FaultException<AccessIsDeniedFault>((AccessIsDeniedFault)this.CreateFault(), this.Message);
        }
    }
}
